The development of the EDVAC computer system of 1948 is often cited as the beginning of the computer era. Since that time, computer systems have evolved into extremely sophisticated devices, and computer systems may be found in many different settings. Computer systems typically include a combination of hardware, such as semiconductors and circuit boards, and software, also known as computer programs. As advances in semiconductor processing and computer architecture push the performance of the computer hardware higher, more sophisticated computer software has evolved to take advantage of the higher performance of the hardware, resulting in computer systems today that are much more powerful than just a few years ago.
Today's more powerful computers are often connected in networks, and a user at one computer, often called a client, may wish to access information at multiple other computers, often called servers, via a network. The network may be a local network that connects computers associated with the same company, e.g., a LAN (Local Area Network), or it may be an external network, such as the Internet or World Wide Web, that connects computers from disparate users and companies. Further, the network may be a combination of local and external networks. Companies typically have multiple computers containing different hardware and software packages attached to these networks.
Computers attached to a network often boot up (or initialize) using various standard protocols, such as PXE or BOOTP. PXE (PreBoot Execution Environment) allows a computer to boot from a server on the network prior to booting the operating system on a storage device local to the computer. A PXE-enabled computer connects its NIC (Network Interface Card) to the LAN (Local Area Network), which keeps the computer connected to the network even when the power is off. Bootp (Bootstrap Protocol) is an Internet protocol that enables a diskless computer to discover its own IP (Internet Protocol) address, the IP address of a BOOTP server on the network, and a file to be loaded into memory to boot the machine. Bootp enables the computer to boot without requiring a hard or floppy disk drive. The Bootp protocol is defined by RFC (Request for Comments) 951. DHCP (Dynamic Host Configuration Protocol) is a protocol for assigning dynamic IP addresses to devices on a network. With dynamic addressing, a device can have a different IP address every time it connects to the network. DHCP also supports a mix of static and dynamic IP addresses. Dynamic addressing simplifies network administration because the software keeps track of IP addresses rather than requiring an administrator to manage the task. This means that a new computer can be added to a network without manually assigning it a unique IP address.
The DHCP/PXE implementations require that resource allocations are pre-configured in a configuration file that ties the boot server and image resources to specific MAC addresses, IP addresses, or networks. This is a disadvantage in a dynamic manufacturing environment because manually modifying this configuration file for hundreds or thousands of clients that are being manufactured at the same time is not possible, especially when each client may need to boot multiple boot images during the manufacturing process. And in most cases, the DHCP/PXE daemon programs need to be restarted to retrieve changes to the configuration files, which means that other requests cannot be satisfied during the restart process.
Today, in a manufacturing environment, an ability is needed to move, add, and remove boot servers that clients use to boot from without affecting dynamic production workloads. Current techniques for addressing this problem require an investment in a dedicated network infrastructure, such as separate subnet, switches, and boot servers dedicated to specific clients, which can lead to an uneven distribution of workload across all server assets in a location. This approach also requires that each boot server maintain a copy of all possible resources because the clients do not have the flexibility to access the best server for a given resource requirement.
Thus, a need exists for an improved technique for booting clients from boot servers.